Automated drone delivery system

ABSTRACT

An autonomous delivery device delivery system includes an I/O module, comparison module, determination module, and a response module. The I/O module configured to receive delivery requests from shippers and send delivery request determinations to shippers, the delivery request identifying an autonomous delivery device scheduled to complete a delivery defined by the delivery request. The comparison module configured to compare delivery request attributes against delivery criteria to determine whether to approve the delivery requests. The determination module configured to prepare a delivery request determination based on results from the comparison module. The response module configured to send the delivery request determination to a shipper that initiated the delivery request.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Patent application Ser. No. 62/767,706, entitled “AUTOMATED DRONE DELIVERY SYSTEM”, filed Nov. 15, 2018, in the United States Patent Office, the entirety of which is incorporated by reference.

This application is related to U.S. patent application Ser. No. 16/586,570, entitled “METHOD AND SYSTEM FOR MANAGING NAVIGATIONAL DATA FOR AUTONOMOUS VEHICLES”, filed Sep. 27, 2019, in the United States Patent Office, the entirety of which is incorporated by reference.

BACKGROUND

Drones and other Autonomous delivery Devices (ADD) such as terrestrial delivery devices, unmanned surface delivery devices, and amphibious unmanned delivery devices, are being used by companies to deliver packages to consumers and businesses in residences and various buildings and outside locations. Using drones or ADDs instead of trucks or cars may allow for a reduction of the energy used by these vehicles as well as a reduction in greenhouse gas emissions. Drones and ADDs are typically powered by batteries and have been used to transport packages over short distances. The cost of operating a drone or other automated delivery device may be lower than typical devices, such as traditional trucks, involving a compensated employee.

In order to schedule an automated delivery, there are many navigational and interface guidance factors involved such as the package interface, navigational approach, local identification, various sensor technologies and so on, that need to be known before the drone or ADD leaves its starting point in order to ensure a successful delivery.

Existing implementations for logistical infrastructure for coordinating automated deliveries utilizing drones and ADDs are a conglomeration of different systems. Each system may have a different organizational structure or interface and may or may not interoperate which may lead to information being unreliable, outdated, or inaccessible by other systems.

As a result, vendors may not know the details of a delivery site (e.g., landing zone, location, access constraints, access restrictions, etc.). For instance, collection systems for navigational and guidance information for planning the routes for the drone or ADD may not directly communicate with the systems that handle delivery requests. This lack of communication, integration, and interoperation may impede a drone or ADD delivery as the delivery location may not be available or accessible to the drone or ADD.

Additionally, current systems may not alleviate congestion in the use of the travel ways (airspace, roadways, waterways, etc.) or a risk of collision between an ADD and another ADD, as well as with other objects or people. The current system may be limited to coordinating movement of drones or ADDs operated by a single delivery company. As a result, a different company's drones or ADDs may make decisions based on the assumption that a travel way is clear potentially leading to congestion or an increase in the possibility of collisions.

Still another short coming of current systems may be scheduling. With current systems, multiple drones or ADDs may attempt to deliver to the same location at the same time. Since, the current systems may not communicate scheduling information to each other, a delivery location may become congested rather than ADDs reserving a time and place for a delivery.

Therefore, there is a need for a central system which coordinates all relevant information and guides an automated or semi-automated delivery system.

BRIEF SUMMARY

The methods of the disclosure provide steps involved in approving and scheduling a delivery, which include submitting a delivery detail by a shipper to a clearinghouse unit, wherein the clearinghouse unit includes an assessment unit and a collection unit, assigning the delivery detail to a session record using the clearinghouse unit; populating the session record, and executing an assessment of the delivery detail in the assessment unit, wherein the assessment unit includes logical instructions to determine if the assessment passes to send instructions to collect a range of attributes including, but not limited to navigational aid, an interface guidance, and a delivery verification protocol to the collection unit. If the assessment does not pass, the method sends a rejection response to the shipper to reject the request for scheduling the delivery. The method also includes collecting the navigational guidance, the interface specifications and the delivery verification protocol using the collection unit when the assessment in the assessment unit passes and sending the navigational guidance, the interface specifications and the delivery verification protocol from the collection unit to the shipper.

The disclosure provides a clearinghouse unit that receives destination and package details (referred to herein as “full delivery details”) submitted by the shipper where a clearinghouse unit includes an assessment unit and a collection unit. The unit executes an assessment of the full delivery details in the assessment unit, which includes logical instructions to determine if the assessment passes or does not pass. If the assessment passes, then the assessment unit sends instructions to a collection unit to collect navigational aid and to collect interface guidance. If the assessment does not pass, then the assessment unit sends a rejection response to the shipper whereby the attempted delivery scheduling is terminated. The clearinghouse unit collects the navigational aid and the interface guidance when the assessment in the assessment unit passes and sends the navigational aid, the interface guidance and the delivery verification protocol to the shipper using the collection unit.

In one embodiment, the apparatus includes an I/O module, a comparison module, a determination module, and a response module. The I/O module may be configured to receive delivery requests from shippers and send delivery request determinations to shippers. The delivery request may identify a drone that is scheduled to complete a delivery defined by the delivery request. The comparison module may be configured to compare delivery request attributes against delivery criteria to determine whether to approve the delivery requests. The determination module may be configured to prepare a delivery request determination based on results from the comparison module. The response module may be configured to send the delivery request determination to a shipper that initiated the delivery request.

In some configurations, the comparison module may be configured to deny the delivery request in response to a prior delivery request determination comprising a reservation for a time window and a delivery destination each defined by the delivery request.

In some configurations, the comparison module may be configured to deny the delivery request in response to delivery request attributes failing to satisfy take-off criteria.

In some configurations, the delivery request defines a delivery portal at a delivery destination, the comparison module configured to change the delivery portal of the delivery request to an alternate delivery portal such that the changed delivery request satisfies the delivery criteria.

In some configurations, an update module may be configured to receive updates for at least one of take-off criteria, delivery criteria, regulatory criteria, and landing criteria.

A method, according to one embodiment, may involve receiving a delivery request as a user places an online order for a product, wherein the delivery request designates that an autonomous delivery device will deliver the product. The method may vet the delivery request before the user completes the online order. The method may generate a delivery request determination authorizing the delivery request in response to the delivery request satisfying each delivery criteria associated with a delivery destination identified by the delivery request. The method may generate a delivery request determination rejecting the delivery request in response to the delivery request violating at least one delivery criteria associated with the delivery destination. The method may send the delivery request determination to a shipper assigned to fulfill the online order.

In some configurations, the method may generate a delivery request determination authorizing a modified delivery request in response to the delivery request violating at least one delivery criteria associated with the delivery destination.

In some configurations, the method may reserve a landing zone in response to the delivery request satisfying each delivery criteria associated with the delivery destination.

In some configurations, the delivery request determination authorizing the delivery request may include a reservation that grants the autonomous delivery device exclusive access to a delivery portal of the delivery destination.

In some configurations, the reservation may include a time window for the autonomous delivery device to complete the delivery.

In some configurations, the at least one delivery criteria may include one of a ranked set of criteria, such that when a delivery request violates a higher ranked criteria of a set of delivery criteria associated with the delivery request, lower ranked delivery criteria are not evaluated with respect to the delivery request.

In some configurations, the delivery criteria may include one or more of shipper criteria, autonomous delivery device criteria, timing criteria, weather criteria, delivery request criteria, regulatory criteria, and delivery destination criteria.

In some configurations, the delivery request may include one or more attributes that comprise at least one of shipper attributes, autonomous delivery device attributes, delivery request attributes, and delivery destination attributes.

A system, according to one embodiment, may include a receiving module, an authorization module, and a response module. The receiving module configured to receive delivery requests from a plurality of shippers, each shipper submitting a delivery request based on a service level agreement that requires a delivery request determination within a time threshold. The authorization module configured to determine, within the time threshold, whether the delivery request is approved. The response module configured to send a response to each delivery request, the response comprising one of approving the delivery request and denying the delivery request.

In some configurations, the response module may be configured to send the response within the time threshold.

In some configurations, the system may include a shipper interface. The shipper interface may be configured to generate a delivery request in response to input from one of a plurality of shippers and to send the delivery request to the receiving module and to forward responses from the response module over a communication network.

In some configurations, the input from one of the plurality of shippers comprises autonomous delivery device attributes for the autonomous delivery device assigned to make the delivery.

In some configurations, the system may include a destination interface. The destination interface may be configured to communicate delivery criteria to the authorization module from one or more delivery destinations. In some configurations, the delivery destinations may be configured to send changes to delivery criteria to the authorization module by way of the destination interface.

In some configurations, the system may include a regulator interface. The regulator interface may be configured to communicate regulatory criteria to the authorization module from one or more destination regulators.

BRIEF DESCRIPTION OF THE DRAWINGS

To easily identify the discussion of any particular element or act, the most significant digit or digits in a reference number refer to the figure number in which that element is first introduced.

FIG. 1 is an example block diagram of a computing device 100 that may incorporate certain embodiments of this solution.

FIG. 2 illustrates a software environment 200 in accordance with certain embodiments.

FIG. 3 illustrates a system 300 in accordance with one embodiment.

FIG. 4 illustrates a system 400 in accordance with one embodiment.

FIG. 5 illustrates a clearinghouse 500 in accordance with one embodiment.

FIG. 6 illustrates a delivery request 600 in accordance with one embodiment.

FIG. 7 illustrates a delivery request determination 700 in accordance with one embodiment.

FIG. 8 illustrates a delivery criteria 800 in accordance with one embodiment.

FIG. 9 illustrates a delivery criteria 900 in accordance with one embodiment.

FIG. 10 illustrates a method 1000 in accordance with one embodiment.

DETAILED DESCRIPTION

This disclosure provides a clearinghouse that receives attributes for a delivery, assesses these attributes using a certain set of rules and upon the success of the assessment, sends navigational, interface and delivery verification information to the shipper in order to execute the delivery successfully. “Clearinghouse” refers to a central entity for the collection, classification, and distribution especially of information, such as clearance for a proposed delivery request. (“Clearinghouse.” Merriam-Webster.com. Merriam-Webster, 2019. Web. Edited, 28 Oct. 2019) “Attribute” refers to any property, trait, quality, data value, setting, or feature of an object or thing. “Shipper” refers to an entity organized to execute a delivery of a good to a delivery destination.

In certain embodiments, a delivery is to be made by an ADD or drone. In order to obtain authorization for a delivery a shipper makes a delivery request. “Delivery request” refers to a request from a vendor or shipper to make a delivery to a particular delivery destination. The delivery request may include one or more attributes including, but not limited to shipper attributes, autonomous delivery device attributes, delivery request attributes, delivery destination attributes, and the like.

“Autonomous delivery device” refers to any device, vehicle, robot, apparatus, assembly, subassembly, system, or subsystem configured to deliver cargo, payload, person, or animal from an origin to a destination independently with little or no instruction from a human. Examples of an autonomous delivery device include, but are not limited to, a drone, a four-wheeled autonomous vehicle, a walking robot, and the like. “Drone” refers to an autonomous delivery device configured to move through the air. Examples of a drone include, but are not limited to, an airplane, a sea plane, a helicopter, a quad copter, and the like.

There are many ways in which an autonomous delivery device may deliver an item/good to a proposed delivery location. However, before a shipper decides to make a delivery using an ADD, a shipper may need to evaluate a number of characteristics or attributes about the proposed delivery before scheduling the ADD and initiating the delivery.

In some situations, a shipper may not be able to gather all the relevant information to make a delivery determination within the expected time frame, especially if a potential customer is waiting for a delivery determination (e.g., while an online order is being placed). In other situations, the shipper may not have all the relevant and/or necessary information to make a delivery determination. Examples of a few of the many attributes a shipper may evaluate include, but are not limited to, whether the destination is able to accept deliveries from the type of ADD that may be utilized by the shipper, whether a desired delivery time window is within a restricted delivery time period, whether the weather will permit the delivery, and/or whether other ADDs will be utilizing the same navigational paths, landing zones, or landing approaches for a desired delivery or delivery time window, and the like.

“Time window” refers to a period of time within which an autonomous delivery device is scheduled to make a delivery. Specifically, the time window includes a start time (clock time) and a duration. A start time is a time on a clock, such as an hour, minute, and/or second that the time window starts. The duration is a certain number of seconds, minutes, or hours. In certain embodiments, a time window may be associated with a reservation for the autonomous delivery device to make its delivery at a certain delivery destination. During this time window the autonomous delivery device has exclusive access to a landing zone and all facilities, components, systems, and subsystems associated with that landing zone and/or a delivery portal of the landing zone. In specific embodiments, the exclusive access is associated with the reservation. In one example, the time window may be defined as 12:00 noon and the duration may be three minutes. In another example, the time window may be defined as 2:33 p.m. and the duration may be two minutes. In another example, the time window may be defined as 5:25 a.m. and the duration may be 10 minutes. In another example, the time window may be defined as 10:00 a.m. and the duration may be 60 minutes (or one hour).

“Reservation” refers to a designation of a landing zone for the exclusive use for a particular period of time, a set time window, for an autonomous delivery device. In certain embodiments, a reservation applies to particular delivery portal of a landing zone of a delivery destination. “Landing zone” refers to a specific location, portal, system, subsystem, and/or facility configured to accept a landing aircraft. In certain embodiments, a landing zone includes airspace around a designated landing pad and may also include one or more airways to or from the landing zone that conform to designated routes for entering or exiting a landing zone.

“Delivery portal” refers to a location, facility, portal, platform, pad, system, assembly, subassembly, mechanism, or apparatus configured to accept cargo from a delivery. In one embodiment, the delivery portal is a landing zone. In another embodiment, the delivery portal is a payload receiver configured to hold and secure payload until the payload is retrieved. In certain embodiments, a delivery destination may include a plurality of delivery portal, each delivery portal may be separately configured to accept a payload delivery for a particular type of autonomous delivery device.

In this disclosure, an apparatus, system, and method are presented for determining whether to authorize a shipper to utilize a particular drone or ADD to make a delivery to a proposed location. In certain embodiments, the apparatus, system, and method manage a reservation for the ADD if a proposed delivery is authorized. In one embodiment, the apparatus, system, and method may comprise a clearinghouse configured to evaluate parameters (aka attributes) for a potential delivery before authorization, and, optionally, a reservation is granted for a delivery request with an ADD. The clearinghouse may make this evaluation within a very short time threshold (e.g. a matter of seconds or milliseconds).

The accompanying drawings, which are incorporated in and constitute a part of this specification, show certain aspects of the subject matter disclosed herein and, together with the description, help explain some of the principles associated with the disclosed implementations.

FIG. 1 is an example block diagram of a computing device 100 that may incorporate embodiments of the claimed solution. FIG. 1 is merely illustrative of a machine system to carry out aspects of the technical processes described herein, and does not limit the scope of the claims. One of ordinary skill in the art would recognize other variations, modifications, and alternatives. In certain embodiments, the computing device 100 includes a graphical user interface 102, a data processing system 104, a communication network 106, communication network interface 108, input device(s) 110, output device(s) 112, and the like.

As depicted in FIG. 1, the data processing system 104 may include one or more processor(s) 114 and a storage subsystem 116. Firmware may operate on the processor. “Firmware” refers to software logic embodied as processor-executable instructions stored on volatile memory media and/or non-volatile memory media. “Processor” refers to any circuitry, component, chip, die, package, or module configured to receive, interpret, decode, and execute machine instructions. Examples of a processor may include, but are not limited to, a central processing unit, a general-purpose processor, an application-specific processor, a graphics processing unit (GPU), a field programmable gate array (FPGA), application Specific Integrated Circuit (ASIC), System on a Chip (SoC), virtual processor, processor core, and the like.

“Logic” refers to machine memory circuits, non-transitory machine readable media, and/or circuitry which by way of its material and/or material-energy configuration comprises control and/or procedural signals, and/or settings and values (such as resistance, impedance, capacitance, inductance, current/voltage ratings, etc.), that may be applied to influence the operation of a device. Magnetic media, electronic circuits, electrical and optical memory (both volatile and nonvolatile), and firmware are examples of logic. Logic specifically excludes pure signals or software per se (however does not exclude machine memories comprising software and thereby forming configurations of matter).

“Volatile memory media” refers to any hardware, device, component, element, or circuit configured to maintain an alterable physical characteristic used to represent a binary value of zero or one for which the alterable physical characteristic reverts to a default state that no longer represents the binary value when a primary power source is removed or unless a primary power source is used to refresh the represented binary value. Examples of volatile memory media include but are not limited to dynamic random-access memory (DRAM), static random-access memory (SRAM), double data rate random-access memory (DDR RAM) or other random-access solid-state memory.

While the volatile memory media is referred to herein as “memory media,” in various embodiments, the volatile memory media may more generally be referred to as volatile memory.

In certain embodiments, data stored in volatile memory media is addressable at a byte level which means that the data in the volatile memory media is organized into bytes (8 bits) of data that each have a unique address, such as a logical address. “Non-volatile memory media” refers to any hardware, device, component, element, or circuit configured to maintain an alterable physical characteristic used to represent a binary value of zero or one after a primary power source is removed.

“Circuitry” refers to electrical circuitry having at least one discrete electrical circuit, electrical circuitry having at least one integrated circuit, electrical circuitry having at least one application specific integrated circuit, circuitry forming a general purpose computing device configured by a computer program (e.g., a general purpose computer configured by a computer program which at least partially carries out processes or devices described herein, or a microprocessor configured by a computer program which at least partially carries out processes or devices described herein), circuitry forming a memory device (e.g., forms of random access memory), or circuitry forming a communications device (e.g., a modem, communications switch, or optical-electrical equipment).

“Module” refers to a computer code section having defined entry and exit points. Examples of modules are any software comprising an application programming interface, drivers, libraries, functions, and subroutines.

“Controller” refers to any hardware, device, component, element, circuitry, or circuit configured to manage and control another software, hardware, firmware, device, apparatus, or logic unit, component, device, or component. “Memory” refers to any hardware, circuit, component, module, logic, device, or apparatus configured, programmed, designed, arranged, or engineered to retain data. Certain types of memory require availability of a constant power source to store and retain the data. Other types of memory retain and/or store the data when a power source is unavailable. “Hardware” refers to logic embodied as analog and/or digital circuitry.

“Volatile memory” refers to a shorthand name for volatile memory media. In certain embodiments, volatile memory refers to the volatile memory media and the logic, controllers, processor(s), state machine(s), and/or other periphery circuits that manage the volatile memory media and provide access to the volatile memory media.

“Computer” refers to any computing device. Examples of a computer include, but are not limited to, a personal computer, a laptop, a tablet, a desktop, a server, a main frame, a super computer, a computing node, a virtual computer, a hand held device, a smart phone, a cell phone, a system on a chip, a single chip computer, and the like.

“Driver” refers to low-level logic, typically software, that controls components of a device. Drivers often control the interface between an operating system or application and input/output components or peripherals of a device, for example.

The processor(s) 114 communicate with a number of peripheral devices via a bus subsystem 118. These peripheral devices may include input device(s) 110, output device(s) 112, communication network interface 108, and the storage subsystem 116. The storage subsystem 116, in one embodiment, comprises one or more storage devices and/or one or more memory devices. “Storage device” refers to any hardware, system, sub-system, circuit, component, module, non-volatile memory media, hard disk drive, storage array, device, or apparatus configured, programmed, designed, or engineered to store data for a period of time and retain the data in the storage device while the storage device is not using power from a power supply. Examples of storage devices include, but are not limited to, a hard disk drive, FLASH memory, MRAM memory, a Solid-State storage device, Just a Bunch Of Disks (JBOD), Just a Bunch Of Flash (JBOF), an external hard disk, an internal hard disk, and the like.

A storage device may refer to any hardware, system, sub-system, circuit, component, module, non-volatile memory media, hard disk drive, storage array, device, or apparatus configured, programmed, designed, or engineered to store data for a period of time and retain the data in the storage device while the storage device is not using power from a power supply. Examples of storage devices include, but are not limited to, a hard disk drive, FLASH memory, MRAM memory, a Solid-State storage device, Just a Bunch Of Disks (JBOD), Just a Bunch Of Flash (JBOF), an external hard disk, an internal hard disk, and the like.

Memory may refer to any hardware, circuit, component, module, logic, device, or apparatus configured, programmed, designed, arranged, or engineered to retain data. Certain types of memory require availability of a constant power source to store and retain the data. Other types of memory retain and/or store the data when a power source is unavailable.

In one embodiment, the storage subsystem 116 includes a volatile memory 120 and a non-volatile memory 122. The volatile memory 120 and/or the non-volatile memory 122 may store computer-executable instructions that alone or together form logic 124 that when applied to, and executed by, the processor(s) 114 implement embodiments of the processes disclosed herein.

Volatile memory media may refer to any hardware, device, component, element, or circuit configured to maintain an alterable physical characteristic used to represent a binary value of zero or one for which the alterable physical characteristic reverts to a default state that no longer represents the binary value when a primary power source is removed or unless a primary power source is used to refresh the represented binary value. Examples of volatile memory media include but are not limited to dynamic random-access memory (DRAM), static random-access memory (SRAM), double data rate random-access memory (DDR RAM) or other random-access solid-state memory

In certain embodiments, data stored in volatile memory media is addressable at a byte level which means that the data in the volatile memory media is organized into bytes (8 bits) of data that each have a unique address, such as a logical address.

Volatile memory may refer to a shorthand name for volatile memory media. In certain embodiments, volatile memory refers to the volatile memory media and the logic, controllers, processor(s), state machine(s), and/or other periphery circuits that manage the volatile memory media and provide access to the volatile memory media.

Non-volatile memory may refer to shorthand name for non-volatile memory media. “Non-volatile memory” refers to a shorthand name for non-volatile memory media. In certain embodiments, non-volatile memory media refers to the non-volatile memory media and the logic, controllers, processor(s), state machine(s), and/or other periphery circuits that manage the non-volatile memory media and provide access to the non-volatile memory media.

The input device(s) 110 include devices and mechanisms for inputting information to the data processing system 104. These may include a keyboard, a keypad, a touch screen incorporated into the graphical user interface 102, audio input devices such as voice recognition systems, microphones, and other types of input devices. In various embodiments, the input device(s) 110 may be embodied as a computer mouse, a trackball, a track pad, a joystick, wireless remote, drawing tablet, voice command system, eye tracking system, and the like. The input device(s) 110 typically allow a user to select objects, icons, control areas, text and the like that appear on the graphical user interface 102 via a command such as a click of a button or the like.

The output device(s) 112 include devices and mechanisms for outputting information from the data processing system 104. These may include the graphical user interface 102, speakers, printers, infrared LEDs, and so on, as well understood in the art. In certain embodiments, the graphical user interface 102 is coupled to the bus subsystem 118 directly by way of a wired connection. In other embodiments, the graphical user interface 102 couples to the data processing system 104 by way of the communication network interface 108. For example, the graphical user interface 102 may comprise a command line interface on a separate computing device 100 such as desktop, server, or mobile device.

The communication network interface 108 provides an interface to communication networks (e.g., communication network 106) and devices external to the data processing system 104. The communication network interface 108 may serve as an interface for receiving data from and transmitting data to other systems. Embodiments of the communication network interface 108 may include an Ethernet interface, a modem (telephone, satellite, cable, ISDN), (asynchronous) digital subscriber line (DSL), FireWire, USB, a wireless communication interface such as Bluetooth or WiFi, a near field communication wireless interface, a cellular interface, and the like.

The communication network interface 108 may be coupled to the communication network 106 via an antenna, a cable, or the like. In some embodiments, the communication network interface 108 may be physically integrated on a circuit board of the data processing system 104, or in some cases may be implemented in software or firmware, or the like.

The computing device 100 may include logic that enables communications over a network using protocols such as HTTP, TCP/IP, RTP/RTSP, IPX, UDP and the like.

The volatile memory 120 and the non-volatile memory 122 are examples of tangible media configured to store computer readable data and instructions to implement various embodiments of the processes described herein. Other types of tangible media include removable memory (e.g., pluggable USB memory devices, mobile device SIM cards), optical storage media such as CD-ROMS, DVDs, semiconductor memories such as flash memories, non-transitory read-only-memories (ROMS), battery-backed volatile memories, networked storage devices, and the like. The volatile memory 120 and the non-volatile memory 122 may be configured to store the basic programming and data constructs that provide the functionality of the disclosed processes and other embodiments thereof that fall within the scope of the present invention.

Logic 124 that implements one or more parts of embodiments of the solution may be stored in the volatile memory 120 and/or the non-volatile memory 122. Logic 124 may be read from the volatile memory 120 and/or non-volatile memory 122 and executed by the processor(s) 114. The volatile memory 120 and the non-volatile memory 122 may also provide a repository for storing data used by the logic 124.

The volatile memory 120 and the non-volatile memory 122 may include a number of memories including a main random-access memory (RAM) for storage of instructions and data during program execution and a read only memory (ROM) in which read-only non-transitory instructions are stored. The volatile memory 120 and the non-volatile memory 122 may include a file storage subsystem providing persistent (non-volatile) storage for program and data files. “File” refers to a unitary package for storing, retrieving, and communicating data and/or instructions. A file is distinguished from other types of packaging by having associated management metadata utilized by the operating system to identify, characterize, and access the file. The volatile memory 120 and the non-volatile memory 122 may include removable storage systems, such as removable flash memory.

The bus subsystem 118 provides a mechanism for enabling the various components and subsystems of data processing system 104 communicate with each other as intended. Although the communication network interface 108 is depicted schematically as a single bus, some embodiments of the bus subsystem 118 may utilize multiple distinct busses.

It will be readily apparent to one of ordinary skill in the art that the computing device 100 may be a device such as a smartphone, a desktop computer, a laptop computer, a rack-mounted computer system, a computer server, or a tablet computer device. As commonly known in the art, the computing device 100 may be implemented as a collection of multiple networked computing devices. Further, the computing device 100 will typically include operating system logic (not illustrated) the types and nature of which are well known in the art.

Terms used herein should be accorded their ordinary meaning in the relevant arts, or the meaning indicated by their use in context, but if an express definition is provided, that meaning controls.

The apparatuses, systems, and/or methods disclosed herein, or particular components thereof, may in some embodiments be implemented as software comprising instructions executed on one or more programmable devices. By way of example, components of the disclosed systems may be implemented as an application, an app, drivers, or services.

“Service” refers to a process configurable with one or more associated policies for use of the process. Services are commonly invoked on server devices by client devices, usually over a machine communication network such as the Internet. Many instances of a service may execute as different processes, each configured with a different or the same policies, each for a different client. “Process” refers to software that is in the process of being executed on a device. In one particular embodiment, the system is implemented as a service that executes as one or more processes, modules, subroutines, or tasks on a server device so as to provide the described capabilities to one or more client devices over a network. “Subroutine” refers to a module configured to perform one or more calculations or other processes. In some contexts, the term ‘subroutine’ refers to a module that does not return a value to the logic that invokes it, whereas a ‘function’ returns a value. However herein the term ‘subroutine’ is used synonymously with ‘function’. “Task” refers to one or more operations that a process performs. However, the system need not necessarily be accessed over a network and could, in some embodiments, be implemented by one or more app or applications on a single device or distributed between a mobile device and a computer, for example.

“Software” refers to logic implemented as instructions for controlling a programmable device or component of a device (e.g., a programmable processor, controller). Software can be source code, object code, executable code, machine language code. Unless otherwise indicated by context, software shall be understood to mean the embodiment of said code in a machine memory or hardware component, including “firmware” and micro-code.

“Instructions” refers to symbols representing commands for execution by a device using a processor, microprocessor, controller, interpreter, or other programmable logic. Broadly, ‘instructions’ can mean source code, object code, and executable code. ‘instructions’ herein is also meant to include commands embodied in programmable read-only memories (EPROM) or hard coded into hardware (e.g., ‘micro-code’) and like implementations wherein the instructions are configured into a machine memory or other hardware component at manufacturing time of a device.

“Programmable device” refers to any logic (including hardware and software logic) who's operational behavior is configurable with instructions. “Source code” refers to a high-level textual computer language that requires either interpretation or compilation in order to be executed by a device.

“Object code” refers to the computer code output by a compiler or as an intermediate output of an interpreter. Object code often takes the form of machine language or an intermediate language such as register transfer language (RTL). “Executable code” refers to instructions in a ready-to-execute form by a programmable device. For example, source code instructions in non-interpreted execution environments are not executable code because they must usually first undergo compilation, linking, and loading by the operating system before they have the proper form for execution. Interpreted computer code may be considered executable code because it can be directly applied to a programmable device (an interpreter) for execution, even though the interpreter itself may further transform the interpreted computer code into machine language instructions.

“Machine language” refers to instructions in a form that is directly executable by a programmable device without further translation by a compiler, interpreter, or assembler. In digital devices, machine language instructions are typically sequences of ones and zeros. “Interpreter” refers to logic that directly executes instructions written in a source code scripting language, without requiring the instructions to a priori be compiled into machine language. An interpreter translates the instructions into another form, for example into machine language, or into calls to internal functions and/or calls to functions in other software modules. “Application” refers to any software that is executed on a device above a level of the operating system. An application will typically be loaded by the operating system for execution and will make function calls to the operating system for lower-level services. An application often has a user interface, but this is not always the case. Therefore, the term ‘application’ includes background processes that execute at a higher level than the operating system.

“Computer code” refers to any of source code, object code, or executable code. “Compiler” refers to logic that transforms source code from a high-level programming language into object code or in some cases, into executable code. “Operating system” refers to logic, typically software, that supports a device's basic functions, such as scheduling tasks, managing files, executing applications, and interacting with peripheral devices. In normal parlance, an application is said to execute “above” the operating system, meaning that the operating system is necessary in order to load and execute the application and the application relies on modules of the operating system in most cases, not vice-versa. The operating system also typically intermediates between applications and drivers. Drivers are said to execute “below” the operating system because they intermediate between the operating system and hardware components or peripheral devices. In normal parlance, an application is said to execute “above” the operating system, meaning that the operating system is necessary in order to load and execute the application and the application relies on modules of the operating system in most cases, not vice-versa. The operating system also typically intermediates between applications and drivers. Drivers are said to execute “below” the operating system because they intermediate between the operating system and hardware components or peripheral devices.

“Interpreted computer code” refers to instructions in a form suitable for execution by an interpreter. “Executable” refers to a file comprising executable code. If the executable code is not interpreted computer code, a loader is typically used to load the executable for execution by a programmable device. If the executable code is not interpreted computer code, a loader is typically used to load the executable for execution by a programmable device.

In certain embodiments, data stored in volatile memory media is addressable at a byte level which means that the data in the volatile memory media is organized into bytes (8 bits) of data that each have a unique address, such as a logical address.

“Computer program” refers to another term for ‘application’ or ‘app’. “Computer code section” refers to one or more instructions. “Application programming interface” refers to instructions implementing entry points and return values to a module.

“Driver” refers to low-level logic, typically software, that controls components of a device. Drivers often control the interface between an operating system or application and input/output components or peripherals of a device, for example. Drivers often control the interface between an operating system or application and input/output components or peripherals of a device, for example. “file” refers to a unitary package for storing, retrieving, and communicating data and/or instructions. A file is distinguished from other types of packaging by having associated management metadata utilized by the operating system to identify, characterize, and access the file. A file is distinguished from other types of packaging by having associated management metadata utilized by the operating system to identify, characterize, and access the file. “Loader” refers to logic for loading programs and libraries. The loader is typically implemented by the operating system. A typical loader copies an executable into memory and prepares it for execution by performing certain transformations, such as on memory addresses. The loader is typically implemented by the operating system. A typical loader copies an executable into memory and prepares it for execution by performing certain transformations, such as on memory addresses. “App” refers to a type of application with limited functionality, most commonly associated with applications executed on mobile devices. Apps tend to have a more limited feature set and simpler user interface than applications as those terms are commonly understood in the art.

Referring to FIG. 2, a software environment 200 illustrates various computer hardware devices and software modules coupled by a network 208 in one embodiment. Each device includes a native operating system, typically pre-installed on its non-volatile RAM, and a variety of software applications or apps for performing various functions.

The mobile programmable device 202 comprises a native operating system 214 and various apps (e.g., app 210 and app 212). A computer 204 also includes an operating system 228 that may include one or more libraries of native routines to run executable software on that device. The computer 204 also includes various executable applications (e.g., application 220 and application 224). The mobile programmable device 202 and computer 204 are configured as clients on the network 208. A server 206 is also provided and includes an operating system 242 with native routines specific to providing a service (e.g., service 240 and service 238) available to the networked clients in this configuration.

As is well known in the art, an application, an app, or a service may be created by first writing computer code to form a computer program, which typically comprises one or more computer code sections or modules. Computer code may comprise instructions in many forms, including source code, assembly code, object code, executable code, and machine language. “Assembly code” refers to a low-level source code language comprising a strong correspondence between the source code statements and machine language instructions. Assembly code is converted into executable code by an assembler. The conversion process may be referred to as assembly. Assembly language usually has one statement per machine language instruction, but comments and statements that are assembler directives, macros, and symbolic labels may also be supported. Computer programs often implement mathematical functions or algorithms and may implement or utilize one or more application programming interfaces. “Algorithm” refers to any set of instructions configured to cause a machine to carry out a particular function or process.

A compiler is typically used to transform source code into object code and thereafter a linker combines object code files into an executable application, recognized by those skilled in the art as an “executable”. “Linker” refers to logic that inputs one or more object code files generated by a compiler or an assembler and combines them into a single executable, library, or other unified object code output. One implementation of a linker directs its output directly to machine memory as executable code (performing the function of a loader as well). One implementation of a linker directs its output directly to machine memory as executable code (performing the function of a loader as well). “Library” refers to a collection of modules organized such that the functionality of all the modules may be included for use by software using references to the library in source code.

The distinct file comprising the executable would then be available for use by the computer 204, mobile programmable device 202, and/or server 206. Any of these devices may employ a loader to place the executable and any associated library in memory for execution. The operating system executes the program by passing control to the loaded program code, creating a task or process. An alternate means of executing an application or app involves the use of an interpreter (e.g., interpreter 226).

In addition to executing applications (“apps”) and services, the operating system is also typically employed to execute drivers to perform common tasks such as connecting to third-party hardware devices (e.g., printers, displays, input devices), storing data, interpreting commands, and extending the capabilities of applications. For example, a driver 216 or driver 218 on the mobile programmable device 202 or computer 204 (e.g., driver 230 and driver 232) might enable wireless headphones to be used for audio output(s) and a camera to be used for video inputs. Any of the devices may read and write data from and to files (e.g., file 234 or file 236) and applications or apps may utilize one or more plug-in (e.g., plug-in 222) to extend their capabilities (e.g., to encode or decode video files). “Plug-in” refers to software that adds features to an existing computer program without rebuilding (e.g., changing or re-compiling) the computer program. Plug-ins are commonly used for example with Internet browser applications. Plug-ins are commonly used for example with Internet browser applications.

The network 208 in the software environment 200 can be of a type understood by those skilled in the art, including a Local Area network (LAN), Wide Area network (WAN), Transmission Communication Protocol/Internet Protocol (TCP/IP) network, and so forth. These protocols used by the network 208 dictate the mechanisms by which data is exchanged between devices.

Referencing FIG. 3, a system 300 comprises a clearinghouse 302, a communication network 304, an e-commerce portal 306, and a delivery request portal 308. “Delivery request portal” refers to a software service such as a website configured to permit a shipper to generate or submit a delivery request to a clearinghouse. A user 310 may use the e-commerce portal 306 to order a product. As the user is creating the online order, the e-commerce portal 306 may communicate with one or more of the shippers 312 regarding fulfillment of the online order. One of the shippers 312 may generate a delivery request 314 through the delivery request portal 308 that is passed to the clearinghouse 302 through communication network 304. In one embodiment, the clearinghouse 302 may operate as an arbitrator deciding whether the delivery request can be fulfilled by the autonomous delivery device identified in the delivery request.

In some configurations, the clearinghouse 302 may receive a delivery request 314 as a user 310 places an online order for a product through an e-commerce portal 306. The delivery request 314 may designate that an autonomous delivery device will be utilized to deliver the product. In some instances, the clearinghouse 302 may then vet the delivery request 314 before the user 310 completes the online order. This means, in one example, that the delivery request 314 is vetted by clearinghouse 302 within 0.1 to 10 seconds.

If the delivery request 314 satisfies each of the delivery criteria 316 associated with a delivery destination identified by the delivery request 314, the clearinghouse 302 generates a delivery request determination 318 authorizing the delivery request 314. “Delivery criteria” refers to a set of expectations, laws, rules, regulations, preferences, requirements, laws, or the like, relevant to delivery of a particular good to a particular destination (location). Examples of delivery criteria include, but are not limited to, whether or not a reservation already exists for the particular delivery destination during a time window requested in the delivery request.

“Delivery request determination” refers to a determination whether or not a delivery request is authorized. In one embodiment, a delivery request determination includes a reservation for an autonomous delivery device to make a delivery in accordance with the details of an associated delivery request. Otherwise, if the clearinghouse 302 determines that the delivery request violates at least one delivery criteria 316 associated with the delivery destination, the clearinghouse 302 may generate a delivery request determination 318 rejecting the delivery request. The clearinghouse 302 may send the delivery request determination 318 to a shipper that initiated the delivery request 314 and assigned to fulfill the online order.

The clearinghouse 302 includes an I/O module 320, a comparison module 322, a determination module 324, response module 326, and an update module 328. The I/O module 320 may be configured to receive a delivery request 314 from one or more shippers 312 and send a delivery request determination 318 to the shipper that sent the delivery request 314.

The delivery request 314 may identify an autonomous delivery device that is scheduled to complete a delivery defined by the delivery request 314. In another embodiment, the delivery request 314 may not identify a scheduled autonomous delivery device, instead the delivery request determination 318 may comprise a conditional delivery request determination 318 and include an indication of suitable autonomous delivery devices that could be used for the delivery.

The comparison module 322 may be configured to compare delivery request attributes 332 against delivery criteria 316 to determine whether to approve the delivery requests. The determination module 324 may be configured to prepare a delivery request determination 318 based on results from the comparison module 322. In some configurations, the response module 326 may be configured to send the delivery request determination 318 to a shipper that initiated the delivery request.

The comparison module 322 determines whether to approve or deny the delivery request 314. In some configurations, the comparison module 322 may deny the delivery request 314 in response to a prior delivery request determination 318 comprising a conflicting reservation. For example, the prior delivery request determination 318 may include a reservation 330 for a time window and a delivery destination that match, align, overlap, or otherwise conflicts with a time window and delivery destination set out in the delivery request 314.

In some configurations, the comparison module 322 may deny the delivery request 314 in response to the delivery request 314 failing to satisfy one or more of the delivery criteria 316. For example, in some configurations, the comparison module 322 may be configured to deny the delivery request 314 in response to delivery request attributes 332 failing to satisfy take-off criteria 334. “Take-off criteria” refers to a set of expectations, laws, rules, regulations, preferences, requirements, laws, or the like, relevant to an ADD, such as a drone, taking off from a landing zone. Examples of take-off criteria include, but are not limited to, pre-flight checks, weather conditions, visibility conditions, and the like.

In some configurations, the delivery request 314 may identify a delivery request portal 308 at a delivery destination. In certain instances, the comparison module 322 may determine that the delivery request portal 308 identified by the delivery request 314 is unavailable for the requested delivery. Consequently, in such a case, the comparison module 322 may be configured to change the delivery request portal 308 of the delivery request 314 to an alternate delivery portal (one that is available and satisfies applicable attributes of the delivery request 314) such that the changed delivery request satisfies the delivery criteria 316.

It should be noted that some or all of the delivery criteria 316 may not be static and may change over time. In certain embodiment, the clearinghouse 302 may include an update module 328 configured to receive updates for at least one of the take-off criteria 334, the delivery request criteria 336, the regulatory criteria 338, and the landing criteria 340. “Delivery request criteria” refers to a set of expectations, laws, rules, regulations, preferences, requirements, laws, or the like, relevant to the packaging or handling of a particular good to a particular destination (location). Examples of delivery request criteria include, but are not limited to, determination of the particular good's size and weight for transport by the drone or autonomous delivery device, a regulatory category such as a medical specimen, and the like.

“Regulatory criteria” refers to a set of expectations, laws, rules, regulations, preferences, requirements, laws, or the like, relevant to the use of airspace, flyover, rights of way, crossing, landing of an ADD, landing zone, delivery, or any other attribute relating to a delivery by an ADD as set forth by a regulator. Examples of regulatory criteria include, but are not limited to, size limits, weight limits, noise limits, hours of operation, and the like. “Landing criteria” refers to a set of expectations, laws, rules, regulations, preferences, requirements, laws, or the like, relevant to the landing of an ADD, landing zone, and/or landing approach used by an ADD in performing a delivery. Examples of landing criteria include, but are not limited to, a size of the landing zone, a type of landing zone (e.g., on the ground, on a platform, on a building, etc.), the lighting available with the landing zone, the markings or electronic emitters defining the orientation and precise location of the interface to the landing zone, any sensors used by the landing zone and available for reference during landing, and the like.

“Regulator” refers to an organization, land owner, business owner, home owners association, group, association, civic group, local government body (city), regional government body (county), state government body, national government body (federal), international government body or the like that has power and authority to set and revise regulatory criteria for deliveries using ADD. Users, or administrators, for the different types of criteria may interface with a repository of criteria, by way of the communication network 304, to review, revise, and/or update, the criteria. In one embodiment, the update module 328 may receive the updates for the regulatory criteria 338 from one or more regulators 342 through the communication network 304. Of course, the update module 328 may receive and apply updates for one or more of the take-off criteria 334, delivery request criteria 336, regulatory criteria 338, and/or landing criteria 340.

In some configurations, the system 300 may be operated in accordance with a process described in relation to FIG. 10.

Referencing FIG. 4, a system 400 includes a clearinghouse 402, a shipper interface 404, a destination interface 406, and a regulator interface 408. “Shipper interface” refers to an interface configured to generate or forward a delivery request from a shipper to a clearinghouse. In certain embodiments, the shipper interface comprises a software service such as a website configured to facilitate the exchange of delivery requests and responses between the shippers and the clearinghouse. “Destination interface” refers to an interface configured to exchange delivery criteria between one or more delivery destinations and a clearinghouse. In certain embodiments, the destination interface comprises a software service such as a website configured to facilitate the exchange of delivery criteria.

“Regulator interface” refers to an interface configured to exchange regulatory criteria between one or more destination regulators and a clearinghouse. In certain embodiments, the regulator interface comprises a software service such as a website configured to facilitate the exchange of regulatory criteria. “Destination regulator” refers to any entity having the power to control or regulate rights of ingress and/or egress for a delivery destination. Examples of a destination regulator include, but are not limited to, a city government, a county government, a state government, a federal government, a property owner that owns the private property that includes the delivery destination, and the like. Examples of such property owners include, but are not limited to, a landlord, a company, a homeowners association, and the like. A plurality of shippers 410 may communicate delivery requests to the clearinghouse 402 through the shipper interface 404. Delivery destinations 412 may communicate delivery criteria 414 to the clearinghouse 402 through the destination interface 406.

Destination regulators 416 may communicate regulatory criteria to the clearinghouse 402 through the regulator interface 408. The regulatory criteria 418 may come from a regulator such as city regulators 420, county regulators 422, state regulators 424, and federal regulators 426. In some instances, the regulatory criteria 418 may be communicated by a property owner 428 through the regulator interface 408. The property owner 428 may convey regulatory criteria 418 from sources such as their homeowners association 430, their company 432, and/or their landlord 434.

In some configurations, the clearinghouse 402 receives a delivery requests 436 as a user places an online order for a product, wherein the delivery request designates that an autonomous delivery device will deliver the product. The clearinghouse 402 may vet the delivery request before the user completes the online order. The clearinghouse 402 may determine the delivery request satisfies each of the delivery criteria associated with a delivery destination identified by the delivery request and generate a delivery request determination authorizing the delivery request. In one embodiment, the clearinghouse 402 sends the delivery request determination as a response 438. In another embodiment, the clearinghouse 402 queues the delivery request determination and provides the delivery request determination to a shipper when a status request is received.

The clearinghouse 402 may determine the delivery request violates at least one delivery criteria associated with the delivery destination and generate a delivery request determination rejecting the delivery request. The clearinghouse 402 may send the delivery request determination to a shipper of the plurality of shippers 410, assigned to fulfill the online order.

In some configurations, the clearinghouse 402 may be configured to receive delivery requests 436 from a plurality of shippers 410 through a shipper interface 404. Each shipper may submit a delivery request based on a service level agreement that requires a delivery request determination within a time threshold. “Service level agreement” refers to an agreement, expectation, or other arrangement between a service provider and a service consumer that defines parameters for the amount, quantity, type, level, or range of services performed, either as numeric thresholds and/or ranges, that the service provider agrees to provide to the service consumer so that the service meets the needs of the service consumer. “Time threshold” refers to an amount of time within which a certain action or event is to be completed or initiated. The clearinghouse 402 may be configured to determine, within the time threshold, whether the delivery request is approved. The clearinghouse 402 may be configured to send a response 438 to each delivery request, the response 438 may comprise one of approval of the delivery request or denying the delivery request. In some configurations, the clearinghouse 402 may be configured to send the response 438 within the time threshold.

In some configurations, the shipper interface 404 may be configured to generate a delivery request in response to input from one of a plurality of shippers 410 and to send the delivery request to the clearinghouse 402 and to forward responses from the clearinghouse 402 over a communication network. The input from one of the plurality of shippers 410 may include autonomous delivery device attributes for an autonomous delivery device assigned to make the delivery.

The destination interface 406 may be configured to communicate delivery criteria 414 to the clearinghouse 402 from one or more delivery destinations 412. The delivery destinations 412 may be configured to send changes to delivery criteria 414 to the clearinghouse 402 by way of the destination interface 406. The regulator interface 408 may be configured to communicate regulatory criteria 418 to the clearinghouse 402 from one or more destination regulators 416.

FIG. 5 illustrates a clearinghouse 500 in accordance with one embodiment. The clearinghouse 500 may include a receiving module 502, an authorization module 504, and a response module 506. The clearinghouse 500 receives delivery criteria 508 from various sources.

The receiving module 502 may be configured to receive delivery request from a plurality of shippers. Advantageously, the receiving module 502 may be configured to receive hundreds or thousands of delivery requests each minute and respond within a very short time frame (a time threshold). Because of the prompt response time of the clearinghouse 500, hundreds of thousands of delivery requests can be serviced and shippers have clear and actionable authorization to conduct the delivery.

In one embodiment, a shipper may submit a delivery request based on a service level agreement (SLA) that may require a delivery request determination within a time threshold.

The authorization module 504 may be configured to determine, within the time threshold, whether the delivery request is approved. The response module 506 may be configured to send a response to each delivery request, the response comprising either approving the delivery request or denying the delivery request. The service level agreement may refer to a commitment between a service provider and a client (i.e., shipper) for an expected level of service, response for a delivery request. The speed and efficiency of the clearinghouse 500 enables the clearinghouse 500 to make a determination on a delivery request within a time threshold in order to meet an expected level of service. In certain embodiments, this time threshold may be under sixty seconds. In addition, the speed, efficiency, and capability of the clearinghouse 500 coordinates scheduling, reservations, and criteria over a variety of factors such that a shipper may rely on its reservations and comply with these criteria.

FIG. 6 illustrates attributes of a delivery request 600 in accordance with one embodiment. The delivery request 600 may include one or more attributes that comprise at least one of shipper attributes 602, autonomous delivery device attributes 604, delivery request attributes 606, and delivery destination attributes 608. The shipper attributes 602 may refer to attributes associated with a particular shipper. Examples of shipper attributes include, but are not limited to, delivery safety record, insurance level, size, service areas, reputation, certifications and the like.

The autonomous delivery device attributes 604 may refer to attributes associated with an autonomous delivery device such type (e.g., aerial drone, terrestrial delivery robot, etc.), size, range, capabilities, object avoidance capabilities, or the like. “Autonomous delivery device attributes” refers to attributes associated with a particular autonomous delivery device. Examples of autonomous delivery device attributes include, but are not limited to, size, weight, color, cargo capacity, model, noise generation levels, fuel type, fuel level, motor type, mode of landing, mode of operation (e.g., air, water, land), sensor capabilities, level of autonomy, travel range, and the like.

The delivery request attributes 606 may refer to attributes associated with the goods that are to be delivered that may include the particular good, and the packaging utilized to send the particular good. In one embodiment, the delivery request attributes 606 may include the delivery speed, the delivery time slot, a requested daytime/evening delivery, the delivery date, gift wrapping options, package signing requests, and one or more other options associated with the delivery of an item. A delivery time slot is the time period within which the shipper would like to make the delivery. An example delivery time slot may be between 9 a.m. and 12 noon. “Delivery request attributes” refers to attributes associated with a particular delivery request. In one embodiment, the delivery request attributes include one or more other attributes for a particular delivery request.

The delivery destination attributes 608 may refer to attributes that include the intended delivery location and time window. In some situations, the time window may be a few hours or minutes depending on the delivery request attributes. “Delivery destination attributes” refers to attributes associated with a particular destination that is a potential delivery destination. In one embodiment, the delivery destination attributes include relevant information regarding a destination and its ability to accept a delivery.

FIG. 7 illustrates aspects of a delivery request determination 700 in accordance with one embodiment. A delivery request determination 700 may include a reservation 702 and/or a decision 704.

If a delivery request does not violate any delivery criteria, the decision 704 may be provided as an affirmative signal or indication to proceed with the delivery and may include a reservation 702. If the delivery request is determined to violate at least one of the delivery criteria, the decision 704 may reject the original delivery request and may communicate a modified delivery request. “Modified delivery request” refers to a delivery request for which one or more of the attributes have been altered such that the delivery request can be authorized because, with the altered attributes, the modified delivery request now satisfies all applicable delivery criteria.

The reservation 702 may include a time window 706, delivery constraints 708, and a landing zone 710 comprising a delivery portal 712. “Constraints” refers to a rule, regulation, requirement, limitation, or condition, that defines, blocks, obstructs, or limits the movement of an autonomous delivery device either in time or in space. In one embodiment, one or more constraints include a spatial and/or temporal restriction between a particular ADD and a landing zone. The time window 706 for the autonomous delivery device to complete the delivery may be provided with the delivery request determination 700. The time window 706 may be between a few hours 2-8 hours or within a few minutes (such as 5-10 minutes) depending on the scheduling and capabilities of the autonomous delivery device and/or weather conditions. The delivery constraints 708, in one embodiment, may comprise any spatial and/or temporal restriction relating to a particular ADD and a landing zone. For example, the landing zone at a particular time of day may not allow certain types of ADDs to deliver packages due to the noise caused by those types of ADDs.

The delivery request determination 700 may be generated to authorize a modified delivery request if the delivery request violates at least one delivery criteria associated with the delivery destination. Management and handling of a modified delivery request may be accomplished using a variety of techniques and processes. For example, in one embodiment the delivery criteria may include a set of ranked criteria for each set of criteria specified (e.g., shipper criteria 802, autonomous delivery device criteria 804, timing criteria 806, weather criteria 808, delivery request criteria 810, regulatory criteria 812, and delivery destination criteria 814). The set of ranked criteria may designate a primary criteria that must be satisfied and/or one or more criteria that are desired to be satisfied but not so important that their failure to be satisfied would prevent approval of a delivery request.

In addition, or in another example, in one embodiment the delivery request may include a set of ranked attributes for each set of attributes specified (e.g., shipper attributes 602, autonomous delivery device attributes 604, delivery request attributes 606, and delivery destination attributes 608). As in the criteria example, the set of ranked attributes may designate a primary attribute that must be satisfied and/or one or more attributes that may be used in determining a modified delivery request. A delivery request that may not satisfy all of the primary attributes of the delivery request but still satisfy enough of them that the shipper would like to obtain approval and/or a reservation.

In certain embodiments, the clearinghouse may proceed with approving a modified delivery request without any further information from a shipper or end user that is to receive the payload. Alternatively, or in addition, the clearinghouse may coordinate between the shipper and/or the end user to receive approval for a modified delivery request before the modified delivery request is approved by the clearinghouse.

The delivery request determination 700 may include a reservation 702 for a landing zone 710, if the delivery request satisfies every delivery criteria associated with the delivery destination.

The delivery request determination 700 may include a reservation 702 that grants the autonomous delivery device exclusive access to a delivery portal 712 of the delivery destination.

FIG. 8 illustrates a delivery criteria 800 in accordance with one embodiment. The delivery criteria 800 may include a shipper criteria 802, an autonomous delivery device criteria 804, timing criteria 806, weather criteria 808, delivery request criteria 810, regulatory criteria 812, and delivery destination criteria 814. “Shipper criteria” refers to a set of expectations, laws, rules, regulations, preferences, requirements, laws, or the like, relevant to a shipper completing a delivery. Examples of shipper criteria include, but are not limited to, reputation, insurance coverage status, hours of operation, and the like.

“Autonomous delivery device criteria” refers to a set of expectations, laws, rules, regulations, preferences, requirements, laws, or the like, used to determine whether an autonomous delivery device is configured, capable, and/or suitable for making a delivery to a delivery destination. Examples of autonomous delivery device criteria include, but are not limited to, carrying capacity, delivery mode, size, weight, model, motor type, noise generation levels, fuel type, fuel level, mode of landing, mode of operation (e.g., air, water, land), sensor capabilities, level of autonomy, and the like. “Timing criteria” refers to a set of expectations, laws, rules, regulations, preferences, requirements, laws, or the like, relevant to when or during which time ranges an ADD, such as a drone, is authorized to do a delivery. Examples of timing criteria include, but are not limited to, hours during which no operations are permitted, a scheduled delivery time, a time window for a reservation, and the like. “Weather criteria” refers to a set of expectations, laws, rules, regulations, preferences, requirements, laws, or the like, relevant to when or during which weather conditions an ADD, such as a drone, is authorized to do a delivery. Examples of weather criteria include, but are not limited to, visibility requirements, light conditions, wind conditions, precipitations conditions, temperature conditions, and the like.

“Delivery destination criteria” refers to a set of expectations, laws, rules, regulations, preferences, requirements, laws, or the like, relevant to delivery to a particular destination (location). Examples of delivery destination criteria include, but are not limited to, whether a receiving system of the delivery destination is operational, does the delivery destination support accepting delivery from an ADD, can the receiving system of the delivery destination accept packages having attributes of the package in the planned delivery, and the like.

In some configurations, the system may receive a delivery request as a user places an online order for a product the delivery request designates that an autonomous delivery device will deliver the product. The system may vet the delivery request before the user completes the online order. The system may determine the delivery request satisfies each delivery criteria 800 associated with a delivery destination identified by the delivery request and may generate a delivery request determination authorizing the delivery request. The system may determine the delivery request violates at least one delivery criteria associated with the delivery destination and generate a delivery request determination rejecting the delivery request. An example of a rejection may be that the payload is too heavy for any providers' devices serving that region. If approved, the system may then send the delivery request determination to a shipper assigned to fulfill the online order.

The shipper criteria 802 may include criteria defined by the shipper for the delivery of a good to a destination. In one embodiment, the shipper criteria 802 may include restrictions by the shipper for operating in certain areas. The autonomous delivery device criteria 804 may refer to criteria for utilizing an autonomous delivery device for the delivery of a good to a destination. In one embodiment this may include restrictions based on the type of the autonomous delivery device for transporting a particular good. The timing criteria 806 may refer to criteria associated with a requirement or expectation to deliver a good with an autonomous delivery device at a certain time, or within a certain time window. In one embodiment, the timing criteria 806 may include restrictions on operating times for the autonomous delivery device and/or availability of the autonomous delivery device and/or a delivery portal to deliver the particular good. In another embodiment, timing criteria 806 may include travel restrictions for a particular travel path during a certain date and time, for example parades and/or other community events that may restrict travel of ADDs at a particular time due to a scheduled event. The weather criteria 808 may refer to criteria associated with operational restrictions to deliver a good based on the weather. In one embodiment, the weather criteria 808 may include wind or rain restrictions that prevent the use of certain autonomous delivery devices during windy or rainy conditions. In another embodiment, weather criteria 808 may include temperature restrictions due to operational limitations of certain components utilized in the ADD, such as batteries.

The delivery request criteria 810 may refer to criteria associated with the particular good or packaging of the particular good. In one embodiment, the delivery request criteria 810 may include restrictions on certain goods from being delivered through autonomous delivery devices due to their value, content or construction. The regulatory criteria 812 may refer to restrictions associated with operating autonomous delivery devices for delivery of a good above a certain geographic area. In some embodiments, the regulatory criteria 812 may be restrictions for operating an autonomous delivery device over certain neighborhoods and in certain cities or states. In some configurations, the municipalities or governments may change their policies or rules corresponding to autonomous delivery devices implementing temporary restrictions such as time-of-day restrictions or restrictions for particular events such as parades or large events. The delivery destination criteria 814 may refer to criteria associated with a particular delivery destination such as accessibility. In one embodiment, the delivery destination criteria 814 may include restrictions such as the presence of a predefined landing zone and whether a drone or terrestrial delivery device may be utilized as the autonomous delivery device.

FIG. 9 illustrates a delivery criteria 900 in accordance with one embodiment. The delivery criteria 900 may include a ranked set of criteria 904, that when a delivery request violates a higher ranked criteria (i.e., ranked criteria 906) of a set of delivery criteria associated with the delivery request, lower ranked criteria 910 are not evaluated with respect to the delivery request. In the delivery criteria 900, the ranked criteria 902 and the ranked criteria 908 pass their evaluation, when the determination process evaluates the ranked criteria 906 a violation is determined, and the determination process stops and may not proceed to evaluate the ranked criteria 910. An example of a higher ranked criteria would be a federal government rule that disables all drone deliveries to a specific geographic area, landing zone, facility, or landing location.

In some configurations, the ranked criteria 910 may include weighted criteria that may be utilized to evaluate alternative delivery options as well as adjust the delivery determinations. For example, the weather criteria and the timing criteria maybe weighted differently than the ADD type criteria, the shipper criteria, regulatory criteria, and the delivery destination criteria. The weather criteria may have certain flexibilities with regards to severity of weather conditions that may allow for a delivery if other conditions are met. Timing criteria may have some flexibility. Consequently, the timing criteria may be weighed less than the ADD criteria, the shipper criteria, the regulatory criteria, and the delivery destination criteria

In some configurations, an entity such as a regulatory agency and/or consortium of drone/ADD shippers may set regulations regarding the ranking of certain criteria such that one or more regional clearinghouses operate under the same shipping standards. In some instances, the entity may prioritize safety and airspace management compliance when generating a set of ranked criteria.

In some configurations, the clearinghouse 500 may use a machine learning algorithm to determine the criteria rankings overtime from a historical record of results from deliveries.

In some configurations, the ranking of the ranked criteria 910 may be determined through the use of a decision tree model that identifies prioritization of certain criteria over other criteria before a determination is made. The prioritization of certain criteria may be based on potential financial risks associated with deliveries such as the value of the ADD, the value of the deliverable good/item, and the cost of incidental damages to people or property. The decision tree may also identify certain criteria that may be slightly modified that would allow for a successful delivery. In some configurations, the ranking of the criteria may be determined based on the value of the item/good that is being shipped, for instance if two deliveries have conflicting scheduling for flight path or landing zone, the clearinghouse 500 may prioritize a higher valued delivery over another. An example of a higher valued delivery may include a medical payload or any other payload susceptible to spoil if certain time or environmental conditions can not be met.

Referencing FIG. 10, a method 1000 involves receiving a delivery request as a user places an online order for a product, wherein the delivery request designates that an autonomous delivery device will deliver the product (block 1002). For example, a clearinghouse may receive the delivery request by way of a delivery request portal. A shipper may generate the delivery request using the delivery request portal.

In decision block 1004, the method 1000 vets the delivery request before the user completes the online order. In certain embodiments, the vetting determination may take less than 1 second. In another embodiment, a user may wait up to 60 seconds before a response is provided regarding making the desired delivery using an ADD.

If the clearinghouse determines that the delivery request violates at least one delivery criteria associated with the delivery destination, the clearinghouse generates (block 1006) a delivery request determination rejecting the delivery request. If the delivery request satisfies each delivery criteria, the clearinghouse generates (block 1008) a delivery request determination authorizing the delivery request. Finally, the clearinghouse sends (block 1010) the delivery request determination to a shipper assigned to fulfill the online order.

Various functional operations described herein may be implemented in logic that is referred to using a noun or noun phrase reflecting said operation or function. For example, an association operation may be carried out by an “associator” or “correlator”. Likewise, switching may be carried out by a “switch”, selection by a “selector”, and so on.

Within this disclosure, different entities (which may variously be referred to as “units,” “circuits,” other components, etc.) may be described or claimed as “configured” to perform one or more tasks or operations. This formulation—[entity] configured to [perform one or more tasks]—is used herein to refer to structure (i.e., something physical, such as an electronic circuit). More specifically, this formulation is used to indicate that this structure is arranged to perform the one or more tasks during operation. A structure can be said to be “configured to” perform some task even if the structure is not currently being operated. A “credit distribution circuit configured to distribute credits to a plurality of processor cores” is intended to cover, for example, an integrated circuit that has circuitry that performs this function during operation, even if the integrated circuit in question is not currently being used (e.g., a power supply is not connected to it). Thus, an entity described or recited as “configured to” perform some task refers to something physical, such as a device, circuit, memory storing program instructions executable to implement the task, etc. This phrase is not used herein to refer to something intangible.

The term “configured to” is not intended to mean “configurable to.” An unprogrammed FPGA, for example, would not be considered to be “configured to” perform some specific function, although it may be “configurable to” perform that function after programming.

Reciting in the appended claims that a structure is “configured to” perform one or more tasks is expressly intended not to invoke 35 U.S.C. § 112(f) for that claim element. Accordingly, claims in this application that do not otherwise include the “means for” [performing a function] construct should not be interpreted under 35 U.S.C § 112(f).

As used herein, the term “based on” is used to describe one or more factors that affect a determination. This term does not foreclose the possibility that additional factors may affect the determination. That is, a determination may be solely based on specified factors or based on the specified factors as well as other, unspecified factors. Consider the phrase “determine A based on B.” This phrase specifies that B is a factor that is used to determine A or that affects the determination of A. This phrase does not foreclose that the determination of A may also be based on some other factor, such as C. This phrase is also intended to cover an embodiment in which A is determined based solely on B. As used herein, the phrase “based on” is synonymous with the phrase “based at least in part on.”

As used herein, the phrase “in response to” describes one or more factors that trigger an effect. This phrase does not foreclose the possibility that additional factors may affect or otherwise trigger the effect. That is, an effect may be solely in response to those factors, or may be in response to the specified factors as well as other, unspecified factors. Consider the phrase “perform A in response to B.” This phrase specifies that B is a factor that triggers the performance of A. This phrase does not foreclose that performing A may also be in response to some other factor, such as C. This phrase is also intended to cover an embodiment in which A is performed solely in response to B.

Herein, references to “one embodiment” or “an embodiment” do not necessarily refer to the same embodiment, although they may. Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” Words using the singular or plural number also include the plural or singular number respectively, unless expressly limited to a single one or multiple ones. Additionally, the words “herein,” “above,” “below” and words of similar import, when used in this application, refer to this application as a whole and not to any particular portions of this application. When the claims use the word “or” in reference to a list of two or more items, that word covers all of the following interpretations of the word: any of the items in the list, all of the items in the list and any combination of the items in the list, unless expressly limited to one or the other. Any terms not expressly defined herein have their conventional meaning as commonly understood by those having skill in the relevant art(s).

As used herein, the terms “first,” “second,” etc. are used as labels for nouns that they precede, and do not imply any type of ordering (e.g., spatial, temporal, logical, etc.), unless stated otherwise. For example, in a register file having eight registers, the terms “first register” and “second register” can be used to refer to any two of the eight registers, and not, for example, just logical registers 0 and 1.

When used in the claims, the term “or” is used as an inclusive or and not as an exclusive or. For example, the phrase “at least one of x, y, or z” means any one of x, y, and z, as well as any combination thereof.

One or more aspects or features of the subject matter described herein can be realized in digital electronic circuitry, integrated circuitry, specially designed application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs) computer hardware, firmware, software, and/or combinations thereof. These various aspects or features can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which can be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device. The programmable system or computing system may include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other.

To provide for interaction with a user, one or more aspects or features of the subject matter described herein can be implemented on a computer having a display device, such as for example a cathode ray tube (CRT) or a liquid crystal display (LCD) or a light emitting diode (LED) monitor for displaying information to the user and a keyboard and a pointing device, such as for example a mouse or a trackball, by which the user may provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well. For example, feedback provided to the user can be any form of sensory feedback, such as for example visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including, but not limited to, acoustic, speech, or tactile input. Other possible input devices include, but are not limited to, touch screens or other touch-sensitive devices such as single or multi-point resistive or capacitive trackpads, voice recognition hardware and software, optical scanners, optical pointers, digital image capture devices and associated interpretation software, and the like.

In the descriptions above and in the claims, phrases such as “at least one of” or “one or more of” may occur followed by a conjunctive list of elements or features. The term “and/or” may also occur in a list of two or more elements or features. Unless otherwise implicitly or explicitly contradicted by the context in which it used, such a phrase is intended to mean any of the listed elements or features individually or any of the recited elements or features in combination with any of the other recited elements or features. For example, the phrases “at least one of A and B;” “one or more of A and B;” and “A and/or B” are each intended to mean “A alone, B alone, or A and B together.” A similar interpretation is also intended for lists including three or more items. For example, the phrases “at least one of A, B, and C;” “one or more of A, B, and C;” and “A, B, and/or C” are each intended to mean “A alone, B alone, C alone, A and B together, A and C together, B and C together, or A and B and C together.” Use of the term “based on,” above and in the claims is intended to mean, “based at least in part on,” such that an unrecited feature or element is also permissible.

Computer program applications, which can also be referred to programs, software, software applications, applications, components, or code, include machine instructions for a programmable processor, and can be implemented in a high-level procedural language, an object-oriented programming language, a functional programming language, a logical programming language, and/or in assembly/machine language. As used herein, the term “machine-readable medium” refers to any computer program product, apparatus and/or device, such as for example magnetic discs, optical disks, memory, and Programmable logic Devices (PLDs), used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor. The machine-readable medium can store such machine instructions non-transitorily, such as for example as would a non-transient solid-state memory or a magnetic hard drive or any equivalent storage medium. The machine-readable medium can alternatively or additionally store such machine instructions in a transient manner, such as for example as would a processor cache or other random-access memory associated with one or more physical processor cores.

The subject matter described herein can be embodied in systems, apparatus, methods, and/or articles depending on the desired configuration. The implementations set forth in this disclosure do not represent all implementations consistent with the subject matter described herein. Instead, they are merely some examples consistent with aspects related to the described subject matter. Although a few variations have been described in detail above, other modifications or additions are possible. In particular, further features and/or variations can be provided in addition to those set forth herein. For example, the implementations described above can be directed to various combinations and sub-combinations of the disclosed features and/or combinations and sub-combinations of several further features disclosed above. In addition, the logic flows depicted in the accompanying figures and/or described herein do not necessarily require the particular order shown, or sequential order, to achieve desirable results. Other implementations may be within the scope of the following claims. 

What is claimed is:
 1. An apparatus comprising: an I/O module configured to receive delivery requests from shippers and send delivery request determinations to shippers, the delivery request identifying an autonomous delivery device that is scheduled to complete a delivery defined by the delivery request; a comparison module configured to compare delivery request attributes against delivery criteria to determine whether to approve the delivery request; a determination module configured to prepare a delivery request determination based on results from the comparison module; and a response module configured to send the delivery request determination to a shipper that initiated the delivery request.
 2. The apparatus of claim 1, wherein the comparison module is configured to deny the delivery request in response to a prior delivery request determination comprising a reservation for a time window and a delivery destination each defined by the delivery request.
 3. The apparatus of claim 1, wherein the comparison module is configured to deny the delivery request in response to delivery request attributes failing to satisfy take-off criteria.
 4. The apparatus of claim 1, wherein the delivery request determination authorizing the delivery request comprises a reservation that grants the autonomous delivery device exclusive access to a delivery portal of the delivery destination.
 5. The apparatus of claim 1, wherein the delivery request defines a delivery portal at a delivery destination, the comparison module configured to change the delivery portal of the delivery request to an alternate delivery portal such that the changed delivery request satisfies the delivery criteria.
 6. The apparatus of claim 1, further comprising an update module configured to receive updates for at least one of take-off criteria, delivery criteria, regulatory criteria, and landing criteria.
 7. A method comprising: receiving a delivery request as a user places an online order for a product, wherein the delivery request designates that an autonomous delivery device will deliver the product; vetting the delivery request before the user completes the online order; generating a delivery request determination authorizing the delivery request in response to the delivery request satisfying each delivery criteria associated with a delivery destination identified by the delivery request; generating a delivery request determination rejecting the delivery request in response to the delivery request violating at least one delivery criteria associated with the delivery destination; and sending the delivery request determination to a shipper assigned to fulfill the online order.
 8. The method of claim 7, further comprising generating a delivery request determination authorizing a modified delivery request in response to the delivery request violating at least one delivery criteria associated with the delivery destination.
 9. The method of claim 7, further comprising reserving a landing zone in response to the delivery request satisfying each delivery criteria associated with the delivery destination.
 10. The method of claim 7, wherein the delivery request determination authorizing the delivery request comprises a reservation that grants the autonomous delivery device exclusive access to a delivery portal of the delivery destination and one or more constraints for the delivery.
 11. The method of claim 10, wherein the reservation comprises a time window for the autonomous delivery device to complete the delivery.
 12. The method of claim 7, wherein the at least one delivery criteria comprises one of a ranked set of criteria, such that when a delivery request violates a higher ranked criteria of a set of delivery criteria associated with the delivery request, lower ranked delivery criteria are not evaluated with respect to the delivery request.
 13. The method of claim 7, wherein delivery criteria comprise one or more of shipper criteria, autonomous delivery device criteria, timing criteria, weather criteria, delivery request criteria, regulatory criteria, and delivery destination criteria.
 14. The method of claim 7, wherein the delivery request comprises one or more attributes that comprise at least one of: shipper attributes, autonomous delivery device attributes, delivery request attributes, and delivery destination attributes.
 15. A system comprising: a receiving module configured to receive delivery requests from a plurality of shippers, each shipper submitting a delivery request based on a service level agreement that requires a delivery request determination within a time threshold; an authorization module configured to determine, within the time threshold, whether the delivery request is approved; a response module configured to send a response to each delivery request, the response comprising one of approving the delivery request and denying the delivery request.
 16. The system of claim 15, wherein the response module is configured to send the response within the time threshold.
 17. The system of claim 15, wherein the authorization module is further configured to create a reservation that grants the autonomous delivery device exclusive access to a landing zone.
 18. The system of claim 15, further comprising a shipper interface configured to generate a delivery request in response to input from one of a plurality of shippers and to send the delivery request to the receiving module and to forward responses from the response module over a communication network.
 19. The system of claim 18, wherein the input from one of the plurality of shippers comprises autonomous delivery device attributes for the autonomous delivery device assigned to make the delivery.
 20. The system of claim 15, further comprising a destination interface configured to communicate delivery criteria to the authorization module from one or more delivery destinations.
 21. The system of claim 19, wherein the delivery destinations are configured to send changes to delivery criteria to the authorization module by way of the destination interface.
 22. The system of claim 15, further comprising a regulator interface configured to communicate regulatory criteria to the authorization module from one or more destination regulators. 